#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>

int main(int argc, char const *argv[])
{
    printf("main进程(%d)开始执行 \n", getpid());

    pid_t pid = fork();
    if (pid == 0) // 子进程
    {
        printf("子进程(%d)开始执行\n", getpid());
        // 通过execve()在子进程中执行其它程序（other）
        char *path = "/home/zxf/桌面/linux_app/3_Process/other";
        char *argv[] = {path, "abc", NULL}; // argv[0]为程序名，最后一位必须是NULL
        char *envp[] = {NULL}; // 使用默认环境变量，最后一位必须是NULL
        // char *envp[] = NULL; // 或者指定指定为NULL
        int result = execve(path, argv, NULL);    
        if (result == -1) {
            perror("execve执行失败");
            return -1;
        }
        printf("----- \n"); // 不可能执行：execve执行成功，不会返回
    } else if (pid > 0) { // 父（main）进程
        printf("父进程(%d)继续执行\n", getpid());
    }

    return 0;
}
